package com.txzt.gaea.upgrade.project.domain.model;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.beetl.sql.core.annotatoin.InsertIgnore;
import org.beetl.sql.core.annotatoin.Table;
import org.beetl.sql.core.annotatoin.UpdateIgnore;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;


@Data
@Table(name="tb_budget_manage")
public class BudgetManage implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 经费预算管理id */
    @ExcelIgnore
    private Long id;
    /** 项目id */
    @ExcelIgnore
    private Long projectId;
    /** 流程id */
    @ExcelIgnore
    private Long flowId;
    /** 计划编号 */
    @ExcelIgnore
    private String planNo;
    /** 预算申请编号 */
    @ExcelProperty("预算申请编号")
    private String budgetNo;
    /** 预算项目 */
    @ExcelProperty("预算项目")
    private String budgetName;
    /** 项目子项数量 */
    @ExcelProperty("关联子项")
    private Integer subItemQty;
    @ExcelProperty("预算科目")
    @UpdateIgnore
    @InsertIgnore
    private String ledgerAccountName;

//    @UpdateIgnore
//    @InsertIgnore
//    private String capacityBuildingOneName;
//
//    @UpdateIgnore
//    @InsertIgnore
//    private String capacityBuildingTwoName;
//
//    @UpdateIgnore
//    @InsertIgnore
//    private String capacityBuildingThreeName;
    /** 预算项目 */
    @ExcelIgnore
    private Integer budgetStatus;
    /** 预算科目 */
    @ExcelIgnore
    private String ledgerAccount;
    /** 能力建设体系 */
    @ExcelProperty("能力建设体系")
    private String capacityBuildingOne;
    /** 能力建设体系二级 */
    @ExcelProperty("能力建设体系二级")
    private String capacityBuildingTwo;
    /** 能力建设体系三级 */
    @ExcelProperty("能力建设体系三级")
    private String capacityBuildingThree;
    /** 计划预算(万) */
    @ExcelProperty("计划预算(万)")
    private BigDecimal planBudget;
    /** 年度计划预算(万) */
    @ExcelIgnore
    private BigDecimal planBudgetYear;
    /** 翌年计划预算(万) */
    @ExcelIgnore
    private BigDecimal planBudgetNext;
    /** 申请总经费(万) */
    @ExcelProperty("申请经费(万)")
    private BigDecimal applyFund;
    /** 年度申请经费(万) */
    @ExcelIgnore
    private BigDecimal applyFundYear;
    /** 翌年申请经费(万) */
    @ExcelIgnore
    private BigDecimal applyFundNext;
    /** 项目子项 */
    @ExcelIgnore
    private String subItem;

    /** 备注 */
    @ExcelIgnore
    private String remark;
    /** 提报人 */
    @ExcelIgnore
    private Long createBy;
    /** 提报时间 */
    @ExcelProperty("提报时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    /** 更新人 */
    @ExcelIgnore
    private Long updateBy;
    /** 更新时间 */
    @ExcelIgnore
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
    /** 提报部门 */
    @ExcelIgnore
    private Long deptId;
    /** 删除标志 */
    @ExcelIgnore
    private Integer isDelete;


    /** 开始时间 */
    @ExcelIgnore
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @UpdateIgnore
    @InsertIgnore
    private Date startTime;

    /** 结束时间 */
    @ExcelIgnore
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @UpdateIgnore
    @InsertIgnore
    private Date endTime;

    /** 权限用户 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private Long permissionUser;

    /** 权限部门 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private Long permissionDept;

    /** 当前登录用户 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private Long currentUser;

    /** 是否可审核 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private Boolean isCheck;

    /** 是否可撤回 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private Boolean isRevocation;

    /** 是否可撤回流程 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private Boolean isFlowRevocation;


    /** 提报人名 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private String createByName;
    /** 提报部门名 */
    @ExcelProperty("提报部门")
    @UpdateIgnore
    @InsertIgnore
    private String deptName;
    /** 当前审核步骤用户 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private String currentStepUserName;
    /** 当前审核状态 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private String currentStatus;

    /** 是否审核提交 */
    @ExcelIgnore
    @UpdateIgnore
    @InsertIgnore
    private Boolean isCheckSubmit;

    /** 当前审批用户 */
    @UpdateIgnore
    @InsertIgnore
    private Long currentStepMember;
}
